package pl.edu.pw.elka.tinyrepo.common;

import java.io.File;
import java.io.FileNotFoundException;

/**
 * Wlasciwosci pliku, aktualnie uzywane tylko przez DataServer do generowania XMLa bedacego
 * odpowiedzia na zapytanie typu PROPFIND. 
 * TODO: ujednolicic z klientem
 * 
 *  @author Dominik Oledzki
 */
public class FileProperties {
	/** nazwa pliku na DataServerze */
	private String filename;	
	/** rozmiar pliku w bajtach. */
	private long length;		
	/** czas ostatniej modyfikacji taki sam jak w java.io.File, w przypadku katalogu = 0*/
	private long lastModified;	
	
	/**
	 * Konstruktor na podstawie pliku
	 * 
	 * @param file - plik, ktorego wlasciwosci chcemy odczytac
	 * @throws FileNotFoundException, NullPointerException 
	 */
	public FileProperties(File file) throws FileNotFoundException, NullPointerException
	{
		if (file == null) {
			throw new NullPointerException();
		}
		
		if (!file.exists() || !file.isFile()) {
			throw new FileNotFoundException();
		}
		
		filename = file.getName();
		length = file.length();
		lastModified = file.lastModified();
	}
	
	/**
	 * Konstruktor na podstawie pol, przydatne np. przy zapisie wlasciwosci katalogu.
	 * 
	 * @param filename
	 * @param length
	 * @param lastModified
	 */
	public FileProperties(String filename, long length, long lastModified) {
      super();
      this.filename = filename;
      this.length = length;
      this.lastModified = lastModified;
   }



   public String getFilename() {
		return filename;
	}

	public long getLength() {
		return length;
	}

	public long getLastModified() {
		return lastModified;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public void setLength(long length) {
		this.length = length;
	}

	public void setLastModified(long lastModified) {
		this.lastModified = lastModified;
	}
}
